📤 API de Meios de Envio - Documentação Completa
📋 Visão Geral
A API de Meios de Envio é responsável por toda a gestão de meios de envio de mensagens no sistema CordenaAi. Esta API permite configurar diferentes tipos de canais de comunicação (email, SMS, push notification, etc.), definir suas características visuais, ordem de exibição e configurações específicas. O sistema substitui os meios de envio hardcoded por uma solução dinâmica e flexível.
🎯 Endpoints Disponíveis
📝 Gestão de Meios de Envio
1. GET /api/meios-envio
Listar Meios de Envio Ativos
- Descrição: Retorna uma lista de todos os meios de envio ativos, ordenados por ordem de exibição
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos MeioEnvioConfig
- Uso: Interface de criação de mensagens, dropdowns de seleção de meios de envio
2. GET /api/meios-envio/todos
Listar Todos os Meios de Envio
- Descrição: Retorna uma lista completa de todos os meios de envio (incluindo inativos), ordenados por ordem de exibição
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos MeioEnvioConfig
- Uso: Painel administrativo, configurações do sistema, relatórios
3. GET /api/meios-envio/{id}
Obter Meio de Envio por ID
- Descrição: Retorna os dados completos de um meio de envio específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do meio de envio
- Resposta: Objeto MeioEnvioConfig completo
- Uso: Visualização de detalhes, edição de configurações
4. POST /api/meios-envio
Criar Novo Meio de Envio
- Descrição: Cria um novo meio de envio no sistema
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto CriarMeioEnvioRequest
- Resposta: Objeto MeioEnvioConfig criado com ID gerado
- Uso: Configuração de novos canais de comunicação
5. PUT /api/meios-envio/{id}
Atualizar Meio de Envio
- Descrição: Atualiza os dados de um meio de envio existente
- Método: PUT
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do meio de envio
- Body: Objeto AtualizarMeioEnvioRequest
- Resposta: Objeto MeioEnvioConfig atualizado
- Uso: Modificação de configurações, alteração de status
6. DELETE /api/meios-envio/{id}
Excluir Meio de Envio
- Descrição: Remove permanentemente um meio de envio do sistema
- Método: DELETE
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do meio de envio
- Resposta: Confirmação de exclusão
- Uso: Remoção de canais obsoletos ou não utilizados
🔧 Modelo de Dados
Estrutura do MeioEnvioConfig
{
"id": "integer",
"nome": "string",
"descricao": "string",
"icone": "string",
"cor": "string",
"ativo": "boolean",
"ordemExibicao": "integer",
"requerConfiguracao": "boolean",
"configuracoes": "string",
"usuarioCriacao": "string",
"criacao": "datetime",
"usuarioAtualizacao": "string",
"atualizacao": "datetime"
}
Estrutura do CriarMeioEnvioRequest
{
"nome": "string",
"descricao": "string",
"icone": "string",
"cor": "string",
"ativo": "boolean",
"ordemExibicao": "integer",
"requerConfiguracao": "boolean",
"configuracoes": "string"
}
Estrutura do AtualizarMeioEnvioRequest
{
"id": "integer",
"nome": "string",
"descricao": "string",
"icone": "string",
"cor": "string",
"ativo": "boolean",
"ordemExibicao": "integer",
"requerConfiguracao": "boolean",
"configuracoes": "string"
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todos os endpoints
- Usuários normais: Acesso apenas aos meios de envio ativos (GET)
- Configuradores: Acesso para criação e atualização
📊 Casos de Uso Principais
1. Configuração de Novos Canais
POST /api/meios-envio
Content-Type: application/json
Authorization: Bearer {token}
{
"nome": "WhatsApp Business",
"descricao": "Envio de mensagens via WhatsApp Business API",
"icone": "fab fa-whatsapp",
"cor": "#25D366",
"ativo": true,
"ordemExibicao": 3,
"requerConfiguracao": true,
"configuracoes": "{\"apiKey\":\"\",\"phoneNumber\":\"\"}"
}
2. Listagem para Interface de Usuário
GET /api/meios-envio
Authorization: Bearer {token}
3. Atualização de Configurações
PUT /api/meios-envio/2
Content-Type: application/json
Authorization: Bearer {token}
{
"id": 2,
"nome": "Email Corporativo",
"descricao": "Envio via servidor SMTP corporativo",
"icone": "fas fa-envelope",
"cor": "#007bff",
"ativo": true,
"ordemExibicao": 1,
"requerConfiguracao": true,
"configuracoes": "{\"smtp\":\"smtp.empresa.com\",\"port\":587}"
}
4. Gestão Administrativa
GET /api/meios-envio/todos
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- Nome: Obrigatório, máximo 100 caracteres, único no sistema
- Descrição: Obrigatória, máximo 500 caracteres
- Ícone: Opcional, máximo 100 caracteres (classe CSS ou nome do ícone)
- Cor: Opcional, máximo 7 caracteres (formato hexadecimal)
- Ordem de Exibição: Automática se não fornecida (próximo número disponível)
Regras de Negócio
- Unicidade: Nome deve ser único no sistema
- Status: Meios inativos não aparecem na listagem padrão
- Ordem: Ordem de exibição determina a sequência na interface
- Configurações: Campo JSON para configurações específicas do meio
- Auditoria: Todas as operações são logadas com usuário e timestamp
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 201: Criado com sucesso
- 400: Dados inválidos ou nome duplicado
- 401: Não autorizado
- 403: Acesso negado
- 404: Meio de envio não encontrado
- 409: Conflito (nome já existente)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Listas retornam todos os registros (sistema pequeno)
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
Otimizações
- Cache: Dados de meios de envio são cacheados por 10 minutos
- Índices: Busca otimizada por nome e status
- Compressão: Respostas comprimidas com gzip
🔄 Integração com Outros Módulos
Módulos Relacionados
- Mensagens: Validação de meios de envio na criação
- Notificações: Envio através dos meios configurados
- Configurações: Parâmetros específicos de cada meio
- Auditoria: Log de todas as operações
📱 Uso em Aplicações
Web App
- Interface de criação de mensagens
- Painel administrativo de configuração
- Seleção de meios de envio com ícones e cores
Mobile App
- Lista de meios disponíveis
- Configuração de preferências
- Visualização de status de envio
🛠️ Manutenção e Monitoramento
Logs Importantes
- Criação de novos meios de envio
- Alterações de configuração
- Tentativas de acesso não autorizado
- Erros de validação
Métricas Monitoradas
- Número de meios de envio configurados
- Taxa de uso de cada meio
- Tempo de resposta dos endpoints
- Erros de configuração
📚 Exemplos Práticos
Fluxo de Configuração de Novo Meio
- Validação de dados no backend pela própria API
- POST /api/meios-envio com dados validados
- Verificação de unicidade do nome
- Definição automática da ordem de exibição
- Criação do registro no banco de dados
- Retorno do objeto criado com ID
Fluxo de Uso na Interface
- GET /api/meios-envio para obter meios ativos
- Renderização na interface com ícones e cores
- Seleção pelo usuário na criação de mensagem
- Validação dos meios selecionados
- Processamento do envio através dos meios
Configurações Específicas por Meio
{
"email": {
"smtp": "smtp.gmail.com",
"port": 587,
"ssl": true,
"username": "[email protected]"
},
"sms": {
"provider": "twilio",
"accountSid": "AC...",
"authToken": "..."
},
"whatsapp": {
"apiKey": "...",
"phoneNumber": "+5511999999999",
"webhook": "https://api.domain.com/webhook"
}
}
🔧 Implementação Técnica
Migração de Hardcoded para Dinâmico
A implementação substitui os meios de envio hardcoded por uma tabela dinâmica:
- Tabela:
MeiosEnvio no banco de dados
- Entidade:
MeioEnvioConfig no domínio
- Controller:
MeiosEnvioController para API
- Validação: Integrada no serviço de mensagens
Scripts de Inicialização
INSERT INTO MeiosEnvio (Nome, Descricao, Icone, Cor, Ativo, OrdemExibicao, RequerConfiguracao)
VALUES
('Email', 'Envio por correio eletrônico', 'fas fa-envelope', '#007bff', 1, 1, 1),
('SMS', 'Envio por mensagem de texto', 'fas fa-sms', '#28a745', 1, 2, 1),
('Push Notification', 'Notificação push no aplicativo', 'fas fa-bell', '#ffc107', 1, 3, 0);
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi